Software Organization

Directory Structure

The structure of autodiff’s project directory is as follows.

autodiff/

    __init__.py
    README.md
    forward.py
    backward.py
    optimize.py
    rootfinding.py
    plot.py

tests/

    README.md
    test_forward.py
    test_backward.py
    test_optimize.py
    test_rootfinding.py
    test_plot.py

docs/

    README.md
    milestone1.ipynb
    milestone2.ipynb
    source/
        Background.ipynb
        Getting Started.ipynb
        Implementation.ipynb
        index.rst
        Installation.ipynb
        Libraries_demo.ipynb
        Future Development.ipynb
        License.rst

.gitignore
.travis.yml
LICENSE.txt
README.md
requirements.txt
setup.cfg
setup.py

The source codes lies in the directory autodiff, in which the __init__.py is there to make autodiff a package. The file forward.py contains the source code of forward mode autodifferentiation. The file backward.py contains the source code of backward mode autodifferentiation. The file optimize.py contains optimization routines built on top of autodifferentiation. The file rootfinding.py contains rootfinding routines. The file plot.py contains utility functions for plotting.

The test suites lies in the directory tests. The test files are named to represent the module that they test.

The documents lies in the directory docs. milestone1.ipynb is the history version of document when submitting milestone 1. milestone2.ipynb is the history version of document when submitting milestone 2. document.ipynb, which is this file itself, is the final document.

Other files in the rrot directory includes: .gitignore, which specifies the files that should not be tracked by git, .travis.yml, which is the configuration file for TravisCI, LICENSE.txt, which is the license for this package, README.md, which is the README file for this package, requirements.txt, which specifies the dependensies of this package, setup.cfg, which is the configuration file for installing this package, setup.py, which is the script for installing this package.

Modules

There are now five modules: autodiff.forward for forward mode autodifferentiation, backward for backward mode autodifferentiation, optimize for optimization, rootfinding for rootfinding, and plot for plotting.

Test Automation

The continuous integration is done by TravisCI and Coveralls.

Distribution

autodiff is distributed with PyPI.